<?php
/**
 * Created by PhpStorm .
 * User: 杜磊磊
 * Date: 2020/6/30
 * Time: 15:48
 */
namespace app\common\lib;

class ClassArr
{
    public static function smsClassStat()
    {
        return [
            'ali' => "app\common\lib\sms\AliSms",
            'baidu' => "app\common\lib\sms\BaiduSms",
        ];
    }

    /**
     * @param $type 类型
     * @param $classs
     * @param array $params
     * @param bool $eedInstance 需不需要实例化
     * @return bool
     */
    public static function initClass($type,$classs,$params = [],$needInstance = false)
    {
        //如果我们工厂模式调用的是静态方法，那么我们这个地方返回的类库 AliSms
        //如果不是静态，我们就需要返回对象
        if (!array_key_exists($type,$classs)){
            return false;
        }
        $className = $classs[$type];

        //new RefectionClass('A') => 建立A反射类
        //->newInstanceArgs($args) => 相当于实例化A
        return $needInstance == true ? (new \RefectionClass($className))->newInstanceArgs($params) : $className;
    }
}